import pytest
import allure

from business.UserOptionApi import LoginOpionsApi, UserOptionApi
from conftest import login
from utils.login import Login

"""
写一个查找设备的接口：
1:查找设备不需要登录的token,可以直接查找
2：编写模糊搜索和精确搜索

"""
def get_token():
    global global_token
    if global_token is None:
        global_token = login.login()
        return global_token





"""
1:首先使用夹具进行初始化登录，拿到登录凭证token-->保存到变量里
2:编写底层发送请求层
3:写测试用例-->调用底层发送请求层


1.1 获取用户列表的接口：https://172.17.21.223:9443/ugreen/v1/user/list?reverse=false
1.2 获取公钥的接口：https://172.17.21.223:9443/ugreen/v1/verify/check
1.3 校验用户密码接口：https://172.17.21.223:9443/ugreen/v1/user/rule/password
1.4 创建用户的接口：https://172.17.21.223:9443/ugreen/v1/user/create

创建一个用户的流程:
   1:首先利用夹具初始化，登录获取到接口凭证token
   2:再使用1.1-1.4接口流程配合token完成交互流程
   
   1:校验用户名是否存在：https://172.17.21.248:9443/ugreen/v1/user/name/check   post  username
   2:获取加密的公钥：https://172.17.21.248:9443/ugreen/v1/verify/check    post  username
   3:校验用户密码格式 https://172.17.21.248:9443/ugreen/v1/user/rule/password  post  username password
   4:加密密码提交创建 https://172.17.21.248:9443/ugreen/v1/user/create  post  json
   
   所以的接口根据三元表达：值1 if 条件表达式 else 值2   --》判断改请求需要token不，如果不需要就直接请求，需要就?token
   通过夹具发送请求的都带了token,因为夹具登录了，提取了token
   获取公钥的接口可以不带token,也可以带token=  ，带空
   明天实现一下自动化
   
   
   ！！！！！！！接下来实现一下测试环境的冒烟用例！！！！！！
   
   
"""






token=None

username = "test1"
password = "Qwer1234"

@pytest.fixture()
def init_api():
    global token
    if token is None:
        token=LoginOpionsApi().login()
        print(token)
    return UserOptionApi(token)


@allure.feature("控制面板-用户管理")
class TestUserManagement():
    @allure.title("创建用户")
    def  test_usercreate(self,init_api):
        # allure.step也是一个上下文管理器对象
        with allure.step("获取当前用户列表"):
            userslist = init_api.get_userlist("https://172.17.21.248:9443/ugreen/v1/user/list?reverse=false")
            users =int(len(userslist))
            print(users)
        with allure.step("获取加密公钥"):
            rsa_token = init_api.get_RsaToken("https://172.17.21.248:9443/ugreen/v1/verify/check")
        with allure.step("校验密码格式"):
            init_api.Jiaoyanmima("https://172.17.21.248:9443/ugreen/v1/user/rule/password",username,password)
        with allure.step("创建单个用户"):
            init_api.createUser("https://172.17.21.248:9443/ugreen/v1/user/create",username,password)
            assert len(init_api.get_userlist("https://172.17.21.248:9443/ugreen/v1/user/list?reverse=false"))==users+1














